//#include<iostream>
//#include <vector>
//using namespace std;
//bool Is_Good(int i)
//{
//	int num = i;
//	int cnt = 0;
//	while(num > 0)
//	{
//		cnt += 1;
//		int k = num % 10;
//		num /= 10;
//		if(k % 2 == 1 && cnt % 2 == 1)
//		{
//			continue;
//		}
//		else if(k % 2 == 0 && cnt % 2 == 0)
//		{
//			continue;
//		}
//		else
//		{
//			return false;
//		}
//	}
//	return true;
//}

//int main()
//{	
//	//正整数 
//	int N;
//	cin>>N;
//		
//	int ret;
//	for(int i = 1; i <= N;i++)
//	{
//		//判断每一个
//		if(Is_Good(i))
//		{
//			ret += 1;
//		}
//	} 
//	cout << ret;
//	return 0;
//}

//int main()
//{
//	int n;
//	float d;
//	long long int r1 = 1;
//	cin >> n >> d;
//	for(int i = 0; i < n; i++)
//	{
//		r1 *= 2;
//	}
//	long double R;
//	R = r1 * d; 
//	int r2 = (long long int)R;
//	if(R - r2 >= 0.5)
//	{
//		R = r2 + 1;
//	}
//	else
//	{
//		R = r2;
//	}
//	cout << R;
//	return 0;
//}

//#include <iostream>
//#include <vector>
//#include <climits>
//#include <algorithm>
//using namespace std;
//// 最大公约数 
//int GCD(int a, int b) {
//    while (b != 0) {
//        int temp = b;
//        b = a % b;
//        a = temp;
//    }
//    return a;
//}
//
//int LCM2(int a, int b) {
//    return a * b / GCD(a, b);
//}
////
//int LCM3(int a, int b, int c) {
//    return LCM2(LCM2(a, b), c);
//}
////
//int main() {
//    int N;
//    cin >> N;
//    vector<int> v;
//    for (int i = 0; i < N; i++) {
//        int num;
//        cin >> num;
//        v.push_back(num);
//    }
//    sort(v.begin(), v.end()); // 排序以处理字典序
//    int max_s = INT_MIN;
//    vector<int> best;
//    for (int c = 2; c < N; c++) {
//        for (int b = 1; b < c; b++) {
//            for (int a = 0; a < b; a++) {
//                int ha = v[a], hb = v[b], hc = v[c];
//                int lcm3 = LCM3(ha, hb, hc);
//                int lcm_ab = LCM2(ha, hb);
//                int lcm_ac = LCM2(ha, hc);
//                int lcm_bc = LCM2(hb, hc);
//                int s = ha * hb * hc * lcm3 / (lcm_ab * lcm_ac * lcm_bc);
//                if (s > max_s) {
//                    max_s = s;
//                    best = {ha, hb, hc};
//                } else if (s == max_s) {
//                    vector<int> current = {ha, hb, hc};
//                    if (current < best) {
//                        best = current;
//                    }
//                }
//            }
//        }
//    }
//    cout << best[0] << " " << best[1] << " " << best[2] << endl;
//    return 0;
//}

//#include <iostream>
//#include <string>
//#include <vector>
//using namespace std;
//int dx[4] = {0,0,1,-1};
//int dy[4] = {1,-1,0,0};
//string dfs(vector<vector<int>> &vv,int N,int K)
//{
//	for(int i = 0; i < N; i++)
//	{
//		for(int j = 0; j < K; j++)
//		{
//			for(int x = 0; x < 4; x++)
//			{
//				for(int y = 0; y < 4; y++)
//				{
//						
//				}	
//			}	
//		}	
//	} 
//}
//
//int main()
//{
//	int N;
//	int K;
//	cin >> N;
//	cin >> K;
//	vector<vector<int>> vv(N,vector<int>(K));
//	for(int i = 0; i < N; i++)
//	{
//		for(int j = 0; j < K; j++)
//		{
//			int num;
//			cin >> num;
//			vv[i][j] = num;
//		}
//	}
//	cout << dfs(vv,N,K);
//	return 0;
//}

#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    vector<long long> prefix(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        prefix[i] = prefix[i - 1] + a[i - 1];
    }
    long long min_diff = LLONG_MAX;
    for (int i = 0; i < n - 1; i++) {  // 第一个区间结束在 i
        for (int j = i + 1; j < n; j++) {  // 第二个区间开始在 j
            for (int k = j; k < n; k++) {  // 第二个区间结束在 k
                long long sum1 = prefix[i + 1] - prefix[0];
                long long sum2 = prefix[k + 1] - prefix[j];
                min_diff = min(min_diff, abs(sum1 - sum2));
            }
        }
    }
    cout << min_diff << endl;
    return 0;
}


